from django.shortcuts import render
from django.http import HttpResponse
from django.contrib.auth.hashers import make_password, check_password
from django.core.urlresolvers import reverse
from we.settings import BASE_DIR
from django.core.paginator import Paginator
from . . import models
import time,os
from django.db.models import Q
from .viewsIndex import uploads

# Create your views here.


# 后台会员管理表单 显示
def useradd(request):
    # 判断当前的请求方式
    if request.method =='GET':
        # 加载表单页面
        return render(request,'myadmin/users/add.html')
    elif request.method == 'POST':
        try:
            # 接收数据,
            data = request.POST.dict()
            data.pop('csrfmiddlewaretoken')

            # 密码加密
            data['password'] = make_password(data['password'], None, 'pbkdf2_sha256')


            # 头像上传
            myfile = request.FILES.get('pic_url')
            if myfile:
                # 调用函数进行头像上传
                data['pic_url'] = uploads(myfile)
            else:
                data['pic_url'] = '/static/pics/m.png'
            # 进行数据添加
            ob = models.Users(**data)
            ob.save()
            return HttpResponse('<script>alert("添加成功");location.href="'+reverse('myadmin_user_index')+'"</script>')

        except:        
            return HttpResponse('<script>alert("添加失败");location.href="'+reverse('myadmin_user_add')+'"</script>')


# 后台用户列表
def userindex(request):
    # 获取所有的用户数据
    data = models.Users.objects.filter().exclude(status=3)

    # 获取搜索条件和参数
    types = request.GET.get('types')
    keywords = request.GET.get('keywords')

    # 判断是否有搜索条件
    if types:
        # 判断搜索的类型
        if types == 'all':
            # 多字段的条件搜索
            data = data.filter(Q(username__contains=keywords)|Q(phone__contains=keywords)|Q(email__contains=keywords)|Q(age__contains=keywords))
        elif types == "status":
            arr = {'正常':0,'禁用':1,'删除':3}
            data = data.filter(status=arr[keywords])
        elif types == 'sex':    
            arr = {"男":1,'女':0}
            data = data.filter(sex=arr[keywords])    

        else:
            search = {types+'__contains':keywords}
            data = data.filter(**search )
    
    # 实例化分页类  参数1是所有的数据对象,参数2每页显示条数
    paginator = Paginator(data,7)

    # h获取当前页码数 ?p=n
    p =request.GET.get('p',1) 

    # 获取当前页的数据
    userlist = paginator.page(p)

    # 分配数据
    context = {'userlist':userlist}

    # 添加模板
    return render(request,'myadmin/users/index.html',context)


# 逻辑删除会员
def userdel(request,uid):
    try:
    	# 根据uid获取用户对象进行删除
    	ob = models.Users.objects.get(id=uid)
    	ob.status = 3
    	ob.save()
    	return HttpResponse('<script>alert("删除成功");location.href="'+reverse('myadmin_user_index')+'"</script>')
    except:
    	return HttpResponse('<script>alert("删除失败");location.href="'+reverse('myadmin_user_index')+'"</script>')
		
		
# 显示编辑表单,执行编辑
def useredit(request,uid):
#     # 根据uid获取用户对象
    ob = models.Users.objects.get(id=uid)
    # 判断请求方式
    if request.method == 'GET':    
        # 显示编辑表单
        return render(request,'myadmin/users/edit.html',{'uinfo':ob})	
    
    elif request.method == 'POST':
		# # 执行编辑

        ob.username = request.POST.get('username')

		# 密码判断
        if request.POST.get('password'):
            # 修改
            ob.password = make_password(request.POST['password'], None, 'pbkdf2_sha256')

        ob.phone = request.POST.get('phone')

        ob.email = request.POST.get('email')

        ob.age = request.POST.get('age')

        ob.sex = request.POST.get('sex')
		# 判断是否更新了头像
        myfile = request.FILES.get('pic_url')
        
        if myfile:
			# 上传新头像,删除原头像
            if ob.pic_url != '/static/pics/user.jpg':
                try:
                    # 删除原来上传的主图
                    os.remove(BASE_DIR+ob.pic_url)
                except:
                    pass

			# 更新头像
            ob.pic_url = uploads(myfile)

		# 执行数据更新
        ob.save()
        return HttpResponse('<script>alert("更新成功");location.href="'+reverse('myadmin_user_index')+'"</script>')




        